/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.magri.aula1.exercicio2;

import java.math.BigDecimal;
import javax.swing.JOptionPane;

/**
 *
 * @author Magri
 */
public class Calculadora {
    
    private static final int MULTIPLICA = 0;
    private static final int DIVIDE = 1;
    private static final int SOMA = 2;
    private static final int SUBTRAI = 3;
    
    private BigDecimal valor;
    private BigDecimal resultado;
    private int operador;
    
    
    
    
    public Calculadora() {
    }

    public void setValor(BigDecimal valor) {
        System.out.println("debug: setValor " + this.valor);
        this.valor = valor;

        display(valor);
    }

    public void setOperador(int operador) {
        calcular();
        this.operador = operador;
        //valor = null;
    }
    
    public void calcular() {
        System.out.println("debug: calcular " + resultado + " " + operador + " " + valor);
        if (resultado != null) {
            switch (operador) {
                case MULTIPLICA:
                    resultado = resultado.multiply(valor);
                    break;
                case DIVIDE:
                    resultado = resultado.divide(valor);
                    break;
                case SOMA:
                    resultado = resultado.add(valor);
                    break;
                case SUBTRAI:
                    resultado = resultado.subtract(valor);
                    break;
                default:
            }
            display(resultado);
        } else {
            resultado = valor;
        }
    }
    
    private void display(Object dados) {
        System.out.println(dados);
        JOptionPane.showMessageDialog(null, dados);
    }
    
    
    public static void main(String[] args) {
        Calculadora calc = new Calculadora();
        calc.setValor(new BigDecimal(8));
        calc.setOperador(SOMA);
        calc.setValor(new BigDecimal(2));
        calc.calcular();
        calc.calcular();
        calc.calcular();
        calc.setOperador(MULTIPLICA);
        calc.setValor(new BigDecimal(2));
        calc.calcular();
        calc.calcular();
    }
    
}
